package com.steel.yfmall.cloud.assistant.dto.zg.order;

import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 中冠订单建立main实体
 */
@Getter
@Setter
public class ZgOrderMainBean implements Serializable {

    private static final long serialVersionUID = 8072560202095592299L;
    /**
     * N:新增
     * R:修改
     * D:删除
     */
    private String inputcode;

    /**
     * 电子商务合同号
     */
    private String draftOrderNo;

    /**
     * 客户编号
     */
    private String custNo;

    /**
     * 托盘客商
     */
    private String salesCustNo;

    /**
     * 销售类型 必填，固定填『N』:国内
     */
    private String salesType = "N";

    /**
     * 产品大类
     * B:外售方钢
     * H:热轧钢卷
     * P:外售板坯
     * R:棒材
     * W:线材
     * X:副产品
     * Z:热轧钢板
     */
    private String prodClass;

    /**
     * 合同号 ??? 不必填
     */
    private String contractNo;

    /**
     * 销售员
     */
    private String salesMan;

    /**
     * 交货公差下限 必填，默认-10
     */
    private String shipTolMin = "-10";

    /**
     * 交货公差上限 必填，默认10
     */
    private String shipTolMax = "10";

    /**
     * 签订地点 必填，固定值『平山县南甸镇』
     */
    private String signedSite = "平山县南甸镇";

//    /**
//     * 合同类型:(1：月度协议，2年度协议,3一单一议)
//     */
//    private Integer contractType;

//    /**
//     * 排产方式（1生产订单,2现货订单）
//     */
//    private Integer productionScheduling;

    /**
     * 收款方式，A现款、B信用证、C银行汇票、D银行承兑汇票、E T/T、F现款与承兑，若选F，现款栏位必填
     */
    private String payMethod;

    /**
     * 订单类型
     * 1:一般订单
     * 2:委外加工
     * 3:来料加工
     */
    private Integer orderType;

    /**
     * 来料加工计价方式(A.敬业过磅重，B.客户过磅重，C.客户理论重，D.出货重)
     */
    private String priceMethod;

    /**
     * 供货类型 A贸易商、B终端工地/厂、C重点工程、D现货
     */
    private String supplyType;

    /**
     * 合同类型
     * C:一单一议
     * M:月度协议
     * Y:年度协议
     */
    private String contractTypeA = "C";

    /**
     * 排产方式
     * 必填，
     * P:生产订单
     * I:现货订单
     */
    private String contractTypeB = "I";

    /**
     * 订单类型
     * N:一般订单
     * O:委外加工
     * P:来料加工
     */
    private String contractTypeC = "N";

    /**
     * 来料加工计价方式
     * 只有订单类型为来料加工，才必填
     * A:敬业过磅重
     * B:客户过磅重
     * C:客户理论重
     * D:出货重
     */
    private String contractTypeD = "";

    /**
     * 供货类型 ???
     * A:贸易商
     * B:终端工地/厂
     * C:重点工程
     * D:现货
     */
    private String contractTypeE = "B";

    /**
     * 销售公司
     */
    private String signedComp = "";

    /**
     * 尺寸讯息
     */
    private String sizeMsg = "";

    /**
     * 商品厚度
     */
    private BigDecimal orderThick;

    /**
     * 销售组 ???
     */
    private String salesGroup = "";

    /**
     * 销售区域
     */
    private String salesArea = "";

    /**
     * 收款方式 ???
     * A:现款
     * B:信用证
     * C:银行汇票
     * D:银行承兑汇票
     * E:T/T
     * F:现款与承兑，若选F，现款栏位必填
     */
    private String receivePaymentMethod = "A";

    /**
     * 币别 必填，固定带『CNY』
     */
    private String crcy = "CNY";

    /**
     * 汇率 必填，固定带1,
     */
    private BigDecimal exchangeRate = new BigDecimal("1");

    /**
     * 税别 必填，默认『D』:16% ???
     */
    private String taxType = "D";

     /**
     * 运费担当
     * A:客提
     * D:一票送货-锁定运费
     * H:一票送货-实际运费
     * E:两票送货
     */
    private String transWay = "";

    /**
     * 收货人序号
     */
    private String recOrderNo = "001";

    /**
     * 质保书寄送序号 ???
     */
    private String certifyPostNo = "001";

    /**
     * 发票寄送序号 ???
     */
    private String invPostNo = "001";

    /**
     * 起点代码
     */
    private String beginLocNo = "";

    /**
     * 终点代码
     */
    private String endLocNo = "";

    /**
     * 终到地区
     */
    private String areaNo = "";

    /**
     * 质保书份数 必填，默认1
     */
    private String millCopy = "1";

    /**
     * 结算模式
     * L:锁定价
     * T:旬定价
     * HM:半月定价
     * O:出厂定价
     * P:期间定价
     * M:月定价
     * E:月末定价
     * C:货到定价-人工入价
     * CG:货到定价-系统取价
     * CGI:货到定价-系统取价(不可逆)
     * HI:人工入价
     */
    private String settleMode = "L";

    /**
     * 定价区域
     */
    private String deliveryArea = "";

    /**
     * 缴款方式
     * F:全款缴款
     * N:节点缴款
     */
    private String paymentMethod = "F";

    /**
     * 第一次缴款日期
     * 若缴款方式是全额缴款，则为必填
     * yyyymmdd
     */
    private String payDateA = "";

    /**
     * 第一次缴款金额
     * 若缴款方式是全额缴款，则为必填
     */
    private String payAmtA = "";

    /**
     * 第一次收款方式
     * A:现汇
     * B:承兑
     * C:现款或承兑
     */
    private String payMethodA = "";

    /**
     * 价格类别
     * 必填(结算模式为锁定价除外)，
     * PUT-ON-FILE:备案价
     * GUIDE:指导价
     * NET:全网价
     * NET_BASE:网价基价
     * MONTH:月结算价
     * GUIDE_NET:指导价+网价
     */
    private String priceType = "PUT-ON-FILE";

    /**
     * 结算条款
     * 结算模式为货到定价-人工入价才可填写，也一定要填写
     */
    private String settleTerm = "";

    /**
     * 车型
     * 必填，默认『0』无要求
     */
    private String carKind = "0";

    /**
     * 载重类型
     * 必填，默认『2』标载
     */
    private String loadWgtKind = "2";

    /**
     * 终点类型
     * 必填，默认『F』工地
     */
    private String siteKind = "F";

    /**
     * 现款
     * 收款方式为现款与承兑则必填，其他则不可填写
     */
    private String cash = "";

    /**
     * 缴交全款工作日
     * 若缴款方式是全额缴款，则为必填，只能输入1或2
     */
    private String cashPayDays = "1";

    /**
     * 结算周期起 yymmdd
     */
    private String settleDateS = "";

    /**
     * 结算周期迄 yymmdd
     */
    private String settleDateF = "";

    /**
     * 第二次缴款日期
     * yyyymmdd
     */
    private String payDateB = "";

    /**
     * 第二次缴款金额
     */
    private String payAmtB = "";

    /**
     * 第二次收款方式
     * A:现汇
     * B:承兑
     * C:现款或承兑
     */
    private String payMethodB = "";

    /**
     * 第三次缴款日期
     * yyyymmdd
     */
    private String payDateC = "";

    /**
     * 第三次缴款金额
     */
    private String payAmtC = "";

    /**
     * 第三次收款方式
     * A:现汇
     * B:承兑
     * C:现款或承兑
     */
    private String payMethodC = "";

    /**
     * 第四次缴款日期
     * yyyymmdd
     */
    private String payDateD = "";

    /**
     * 第四次缴款金额
     */
    private String payAmtD = "";

    /**
     * 第四次收款方式
     * A:现汇
     * B:承兑
     * C:现款或承兑
     */
    private String payMethodD = "";

    /**
     * 让利
     */
    private BigDecimal cutPrice;

    /**
     * 打款优惠
     */
    private BigDecimal paymentFavourable;

    /**
     * 运费优惠
     */
    private BigDecimal freightFavourable;

    /**
     * 网价群组
     * 即为勾选的网价，以下列方式储存:B01|B02|B03…
     */
    private String netPriceGroup = "";

    /**
     * 让利(指导价)
     * 价格类别为指导价+网价才可填写
     */
    private BigDecimal cutPrice2;

    /**
     * 指导价比例
     * 价格类别为指导价+网价才可填写
     */
    private BigDecimal guidePriceRate;

    /**
     * 扣减实际运费
     * Y:是
     * N:否
     */
    private String subActFreightPrice = "";

    /**
     * 抓取合同价格
     * 预设带『N』:否
     */
    private String priceFromContract = "N";

    /**
     * 当月返利
     * Y:是
     * N:否
     */
    private String rebateThisMonth = "";

    /**
     * 最低几天定价
     */
    private BigDecimal minPriceDays;

    /**
     * 预设带『A』:平均
     */
    private String settleModeCountMode = "A";

    /**
     * 结算日期型态
     * s:出货日
     * o:订单日
     */
    private String settleDateType = "";

    /**
     * 出厂第几天定价
     */
    private String outFactoryDays = "";

    /**
     * 定价标准
     * A:最低
     * B:最高
     * C:平均
     * D:第一次
     * E:第二次
     * F:最后一次
     */
    private String netPriceCountMode = "";

    /**
     * 法定假日取价模式
     * A:取放假前一天
     * B:取放假前一天与后一天工作日平均价
     */
    private String holidayGetPriceMode = "";

    /**
     * 周六日取价模式
     * A:周六周日取周五
     * B:周六周日取周一
     * C:周六取周五/周日取周一
     */
    private String nonWorkDateGetPriceMode = "";

    /**
     * 运费结算方式
     * A:理论重
     * W:检斤重
     */
    private String freightSettleMode = "";

    /**
     * 取备注网价
     * Y:是
     * N:否
     */
    private String isNotePrice = "";

    /**
     * 附件名称
     */
    private String filename = "";

    /**
     * 附件路径
     */
    private String fileaddr = "";

    /**
     * 创建人 默认 KEC
     */
    private String createEmpNo = "KEC";

    /**
     * 运输方式 T汽运  R火运
     */
    private String transWayNo = "T";

    public String getCashPayDays() {
        this.cashPayDays = "";
        if (StringUtils.equalsIgnoreCase(this.paymentMethod, "F")) {
            this.cashPayDays = "2";
        }
        return this.cashPayDays;
    }


//    /**
////     * 扣减实际运费
////     * Y:是
////     * N:否
////     *
////     * @return
////     */
////    public void setSubActFreightPrice(String subActFreightPrice) {
////        if ("1".equals(subActFreightPrice)) {
////            subActFreightPrice = "Y";
////        }
////        if ("2".equals(subActFreightPrice)) {
////            subActFreightPrice = "N";
////        }
////        this.subActFreightPrice = subActFreightPrice;
////    }

//    /**
//     * 定价标准
//     * A:最低
//     * B:最高
//     * C:平均
//     * D:第一次
//     * E:第二次
//     * F:最后一次
//     *
//     * @return
//     */
//    public void setNetPriceCountMode(String netPriceCountMode) {
//        if ("1".equals(netPriceCountMode)) {
//            netPriceCountMode = "A";
//        }
//        if ("2".equals(netPriceCountMode)) {
//            netPriceCountMode = "B";
//        }
//        if ("3".equals(netPriceCountMode)) {
//            netPriceCountMode = "C";
//        }
//        if ("4".equals(netPriceCountMode)) {
//            netPriceCountMode = "D";
//        }
//        if ("5".equals(netPriceCountMode)) {
//            netPriceCountMode = "E";
//        }
//        if ("6".equals(netPriceCountMode)) {
//            netPriceCountMode = "F";
//        }
//        this.netPriceCountMode = netPriceCountMode;
//    }

//    /**
//     * 周六日取价模式
//     * A:周六周日取周五
//     * B:周六周日取周一
//     * C:周六取周五/周日取周一
//     *
//     * @return
//     */
//    public void setNonWorkDateGetPriceMode(String nonWorkDateGetPriceMode) {
//        if ("1".equals(nonWorkDateGetPriceMode)) {
//            nonWorkDateGetPriceMode = "A";
//        }
//        if ("2".equals(nonWorkDateGetPriceMode)) {
//            nonWorkDateGetPriceMode = "B";
//        }
//        if ("3".equals(nonWorkDateGetPriceMode)) {
//            nonWorkDateGetPriceMode = "C";
//        }
//        this.nonWorkDateGetPriceMode = nonWorkDateGetPriceMode;
//    }

//    /**
//     * 运费结算方式
//     * A:理论重
//     * W:检斤重
//     *
//     * @return
//     */
//    public void setFreightSettleMode(String freightSettleMode) {
//        if ("1".equals(freightSettleMode)) {
//            freightSettleMode = "A";
//        }
//        if ("2".equals(freightSettleMode)) {
//            freightSettleMode = "W";
//        }
//        this.freightSettleMode = freightSettleMode;
//    }

//    /**
//     * 取备注网价
//     * Y:是
//     * N:否
//     *
//     * @return
//     */
//    public void setIsNotePrice(String isNotePrice) {
//        if ("1".equals(isNotePrice)) {
//            isNotePrice = "Y";
//        }
//        if ("2".equals(isNotePrice)) {
//            isNotePrice = "N";
//        }
//        this.isNotePrice = isNotePrice;
//    }

//    /**
//     * 法定假日取价模式
//     * A:取放假前一天
//     * B:取放假前一天与后一天工作日平均价
//     *
//     * @return
//     */
//    public void setHolidayGetPriceMode(String holidayGetPriceMode) {
//        if ("1".equals(holidayGetPriceMode)) {
//            holidayGetPriceMode = "A";
//        }
//        if ("2".equals(holidayGetPriceMode)) {
//            holidayGetPriceMode = "B";
//        }
//        this.holidayGetPriceMode = holidayGetPriceMode;
//    }


//    /**
//     * 终点类型
//     * 默认『F』工地
//     *
//     * @return
//     */
//    public void setSiteKind(String siteKind) {
//
//        if ("2".equals(siteKind)) {
//            siteKind = "F";
//        } else {
//            siteKind = "";
//        }
//        this.siteKind = siteKind;
//    }

//    /**
//     * 载重类型
//     * 默认『2』标载
//     *
//     * @return
//     */
//    public void setLoadWgtKind(String loadWgtKind) {
//
//        if ("1".equals(loadWgtKind)) {
//            loadWgtKind = "2";
//        } else {
//            loadWgtKind = "";
//        }
//        this.loadWgtKind = loadWgtKind;
//    }

//    /**
//     * 结算日期型态
//     * s:出货日
//     * o:订单日
//     *
//     * @return
//     */
//    public void setSettleDateType(String settleDateType) {
//        if ("1".equals(settleDateType)) {
//            settleDateType = "o";
//        }
//        if ("2".equals(settleDateType)) {
//            settleDateType = "s";
//        }
//        this.settleDateType = settleDateType;
//    }

//
//    /**
//     * 合同类型  3C:一单一议  1M:月度协议  2Y:年度协议
//     */
//    public String getContractTypeA() {
//        if (this.contractType != null) {
//            if (this.contractType == 1) {
//                this.contractTypeA = "M";
//            } else if (this.contractType == 2) {
//                this.contractTypeA = "Y";
//            } else if (this.contractType == 3) {
//                this.contractTypeA = "C";
//            }
//        }
//        return contractTypeA;
//    }

//    /**
//     * 排产方式
//     * 必填，
//     * 1P:生产订单  2I:现货订单
//     */
//    public String getContractTypeB() {
//        if (this.productionScheduling != null) {
//            if (this.productionScheduling == 1) {
//                this.contractTypeB = "P";
//            } else if (this.productionScheduling == 2) {
//                this.contractTypeB = "I";
//            }
//        }
//        return contractTypeB;
//    }

    /**
     * 订单类型
     * 1N:一般订单  2O:委外加工  3P:来料加工
     */
    public String getContractTypeC() {
        return contractTypeC;
    }

//    /**
//     * 来料加工计价方式
//     * A:敬业过磅重
//     * B:客户过磅重
//     * C:客户理论重
//     * D:出货重
//     */
//    public String getContractTypeD() {
//        if (this.priceMethod != null) {
//            if (this.priceMethod == 1) {
//                this.contractTypeD = "A";
//            } else if (this.priceMethod == 2) {
//                this.contractTypeD = "B";
//            } else if (this.priceMethod == 3) {
//                this.contractTypeD = "C";
//            } else if (this.priceMethod == 4) {
//                this.contractTypeD = "D";
//            }
//        }
//        return contractTypeD;
//    }

//    /**
//     * 供货类型   1贸易商、2终端工地/厂、3重点工程、4现货
//     * A:贸易商
//     * B:终端工地/厂
//     * C:重点工程
//     * D:现货
//     */
//    public String getContractTypeE() {
//        if (StringUtils.isNotBlank(this.supplyType)) {
//            if ("".equals(this.supplyType)) {
//                this.contractTypeE = "A";
//            } else if ("".equals(this.supplyType)) {
//                this.contractTypeE = "B";
//            } else if ("".equals(this.supplyType)) {
//                this.contractTypeE = "C";
//            } else if ("".equals(this.supplyType)) {
//                this.contractTypeE = "D";
//            }
//        }
//        return contractTypeE;
//    }

//    /**
//     * 收款方式 （1现款、2承兑、3现款或承兑）
//     * 必填，
//     * A:现款
//     * B:信用证
//     * C:银行汇票
//     * D:银行承兑汇票
//     * E:T/T
//     * F:现款与承兑，若选F，现款栏位必填
//     */
//    public String getReceivePaymentMethod() {
//        if (null != this.payMethod) {
//            int payMethod = this.payMethod;
//            if (payMethod == 1) {
//                this.receivePaymentMethod = "A";
//            } else if (payMethod == 2) {
//                this.receivePaymentMethod = "D";
//            } else if (payMethod == 3) {
//                this.receivePaymentMethod = "F";
//            }
//        }
//        return receivePaymentMethod;
//    }
}
